-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Label legibility improvements: pitch-scaling and pitched line-following #9009
Conversation
786dae6
to
5ae86cc
Compare
ad5bc3c
to
9e9609d
Compare
9e9609d
to
ddb6c65
Compare
hello hi just tagging in so I know when to merge #9153 |
ddb6c65
to
950f781
Compare
@asheemmamoowala Will the de-duplication of wrapped tiles in TilePyramid here play nice with your ImageSource changes? @jfirebaugh Could you take a look at how I did selective binding |
d0deff0
to
b34704d
Compare
@ChrisLoer - #8968 doesn't use |
b34704d
to
c3ecd5f
Compare
Thanks @asheemmamoowala! @ivovandongen This should be ready to test against the |
I'd hope to be able to do selective binding without modifying the low level OpenGL wrappers in mbgl/gl/attribute.cpp. The changes here are adding a pretty specialized case to what should be generic code. I think the core requirement is to enable programs that bind a subset of attributes in a vertex array. Here's my attempt. The main blocker is the fact that Options:
The second option sounds best to me right now. |
@ChrisLoer The text/halo colors seem to work. But there is some general regressions in rendering on this device that also shows up in label rendering it seems: |
c3ecd5f
to
a9b8410
Compare
@jfirebaugh OK, I took a stab at removing the |
If we implement text and halo rendering in a single draw call is this still necessary? mapbox/mapbox-gl-js#4709 (comment) Are we going to hit the attribute limit for data-driven patterned/dashed lines? Will this require a different solution, like somehow packing multiple style properties in a single attribute? |
If we do them in a single draw call, we have to pass both values down, so the selective binding wouldn't be possible any more. We'd have to get around the attribute limit some other way. Looking at your changes in mapbox/mapbox-gl-js#4781, it looks like there are 9 attributes but as much as 72 bits open?
|
a9b8410
to
d297eae
Compare
All the pitch-scaling related changes look good to me
Yep, but since we should move towards treating |
f7777f3
to
6017893
Compare
6017893
to
d4f97b1
Compare
… based on tile distance from camera.
Necessary because collision boxes now change shape based on while tile they're part of.
…els. Viewport-aligned curved labels start to look very strange in the distance. Until we have a better system for projecting them, just prevent them from showing.
…ore closely with symbol shaders.
This prevents TilePyramid from sharing wrapped copies of tiles. This is necessary because two wrapped tiles no longer share the same CollisionTile.
… while waiting for new ones.
It used to overwrite values in the middle of the calculation which would cause problems when `out` and `a` were a reference to the same vector.
port mapbox/mapbox-gl-js#4781 This improves legibility of labels that follow lines in pitched views. The previous approach used the limited information in the shader to calculate put the glyph in approximatelyright place. The new approach does this more accurately by doing it on the cpu where we have access to the entire line geometry.
and rename BufferUsageType to BufferUsage
d4f97b1
to
4f63a39
Compare
Fix #8967 by porting gl-js text pitch scaling behavior to gl-native.
onPlacement
messages #8435 can make for label dancing)CollisionFeature
to support greater range of scales implied by pitch scalingfill_color
andhalo_color
vertex attributes to stay under 8 vertex attribute limit